{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 行列式公式和代数余子式\n",
    "\n",
    "上一讲中，我们从三个简单的性质扩展出了一些很好的推论，本讲将继续使用这三条基本性质：\n",
    "\n",
    "1. $\\det I=1$；\n",
    "2. 交换行行列式变号；\n",
    "3. 对行列式的每一行都可以单独使用线性运算，其值不变；\n",
    "\n",
    "我们使用这三条性质推导二阶方阵行列式：\n",
    "\n",
    "$$\\begin{vmatrix}a&b\\\\c&d\\end{vmatrix}=\\begin{vmatrix}a&0\\\\c&d\\end{vmatrix}+\\begin{vmatrix}0&b\\\\c&d\\end{vmatrix}=\\begin{vmatrix}a&0\\\\c&0\\end{vmatrix}+\\begin{vmatrix}a&0\\\\0&d\\end{vmatrix}+\\begin{vmatrix}0&b\\\\c&0\\end{vmatrix}+\\begin{vmatrix}0&b\\\\0&d\\end{vmatrix}=ad-bc$$\n",
    "\n",
    "按照这个方法，我们继续计算三阶方阵的行列式，可以想到，我们保持第二、三行不变，将第一行拆分为个行列式之和，再将每一部分的第二行拆分为三部分，这样就得到九个行列式，再接着拆分这九个行列式的第三行，最终得到二十七个行列式。可以想象到，这些矩阵中有很多值为零的行列式，我们只需要找到不为零的行列式，求和即可。\n",
    "\n",
    "$$\\begin{vmatrix}a_{11}&a_{12}&a_{13}\\\\a_{21}&a_{22}&a_{23}\\\\a_{31}&a_{32}&a_{33}\\end{vmatrix}=\\begin{vmatrix}a_{11}&0&0\\\\0&a_{22}&0\\\\0&0&a_{33}\\end{vmatrix}+\\begin{vmatrix}a_{11}&0&0\\\\0&0&a_{23}\\\\0&a_{32}&0\\end{vmatrix}+\\begin{vmatrix}0&a_{12}&0\\\\a_{21}&0&0\\\\0&0&a_{33}\\end{vmatrix}+\\begin{vmatrix}0&a_{12}&0\\\\0&0&a_{23}\\\\a_{31}&0&0\\end{vmatrix}+\\begin{vmatrix}0&0&a_{13}\\\\a_{21}&0&0\\\\0&a_{32}&0\\end{vmatrix}+\\begin{vmatrix}0&0&a_{13}\\\\0&a_{22}&0\\\\a_{31}&0&0\\end{vmatrix}$$\n",
    "\n",
    "$$原式=a_{11}a_{22}a_{33}-a_{11}a_{23}a_{32}-a_{12}a_{21}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}\\tag{1}$$\n",
    "\n",
    "同理，我们想继续推导出阶数更高的式子，按照上面的式子可知$n$阶行列式应该可以分解成$n!$个非零行列式（占据第一行的元素有$n$种选择，占据第二行的元素有$n-1$种选择，以此类推得$n!$）：\n",
    "\n",
    "$$\\det A=\\sum_{n!} \\pm a_{1\\alpha}a_{2\\beta}a_{3\\gamma}\\cdots a_{n\\omega}, (\\alpha, \\beta, \\gamma, \\omega)=P_n^n\\tag{2}$$\n",
    "\n",
    "这个公式还不完全，接下来需要考虑如何确定符号：\n",
    "\n",
    "$$\\begin{vmatrix}0&0&\\overline 1&\\underline 1\\\\0&\\overline 1&\\underline 1&0\\\\\\overline 1&\\underline 1&0&0\\\\\\underline 1&0&0&\\overline 1\\end{vmatrix}$$\n",
    "* 观察带有下划线的元素，它们的排列是$(4,3,2,1)$，变为$(1,2,3,4)$需要两步操作，所以应取$+$；\n",
    "* 观察带有上划线的元素，它们的排列是$(3,2,1,4)$，变为$(1,2,3,4)$需要一步操作，所以应取$-$。\n",
    "* 观察其他元素，我们无法找出除了上面两种以外的排列方式，于是该行列式值为零，这是一个奇异矩阵。\n",
    "\n",
    "此处引入代数余子式（cofactor）的概念，它的作用是把$n$阶行列式化简为$n-1$阶行列式。\n",
    "\n",
    "于是我们把$(1)$式改写为：\n",
    "\n",
    "$$a_{11}(a_{22}a_{33}-a_{23}a_{32})+a_{12}(a_{21}a_{33}-a_{23}a_{31})+a_{13}(a_{21}a_{32}-a_{22}a_{31})$$\n",
    "\n",
    "$$\\begin{vmatrix}a_{11}&0&0\\\\0&a_{22}&a_{23}\\\\0&a_{32}&a_{33}\\end{vmatrix}+\\begin{vmatrix}0&a_{12}&0\\\\a_{21}&0&a_{23}\\\\a_{31}&0&a_{33}\\end{vmatrix}+\\begin{vmatrix}0&0&a_{13}\\\\a_{21}&a_{22}&0\\\\a_{31}&a_{32}&0\\end{vmatrix}$$\n",
    "\n",
    "于是，我们可以定义$a_{ij}$的代数余子式：将原行列式的第$i$行与第$j$列抹去后得到的$n-1$阶行列式记为$C_{ij}$，$i+j$为偶时时取$+$，$i+j$为奇时取$-$。\n",
    "\n",
    "现在再来完善式子$(2)$：将行列式$A$沿第一行展开：\n",
    "\n",
    "$$\\det A=a_{11}C_{11}+a_{12}C_{12}+\\cdots+a_{1n}C_{1n}$$\n",
    "\n",
    "到现在为止，我们了解了三种求行列式的方法：\n",
    "\n",
    "1. 消元，$\\det A$就是主元的乘积；\n",
    "2. 使用$(2)$式展开，求$n!$项之积；\n",
    "3. 使用代数余子式。\n",
    "\n",
    "计算例题：\n",
    "$A_4=\\begin{vmatrix}1&1&0&0\\\\1&1&1&0\\\\0&1&1&1\\\\0&0&1&1\\end{vmatrix}\\stackrel{沿第一行展开}{=}\\begin{vmatrix}1&1&0\\\\1&1&1\\\\0&1&1\\end{vmatrix}-\\begin{vmatrix}1&1&0\\\\0&1&1\\\\0&1&1\\end{vmatrix}=-1-0=-1$"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
